package club.beimeng.sendEmail;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.event.ConnectionListener;
import javax.mail.event.TransportListener;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendEmail {

    public static void main(String[] args) throws Exception {

        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.qq.com");  //设置QQ邮件服务器 smtp.exmail.qq.com
//        prop.setProperty("mail.host", "smtp.exmail.qq.com");  //设置QQ邮件服务器 smtp.exmail.qq.com // 企业邮箱发件地址
        prop.setProperty("mail.transport.protocol", "smtp");  // 邮件发送协议

        // 关于QQ邮箱，还要设置SSL加密，加上以下代码即可
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);


        /*使用JavaMail发送邮件的5个步骤*/

        //1 创建定义整个应用程序所需的环境信息的 Session 对象
        Session session = Session.getDefaultInstance(prop);

            //开启Session的debug模式，这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);

        //2 通过session得到transport对象,用它装载Message(邮件本体对象)
        Transport ts = session.getTransport();




        //3、为transport对象配置发件人，授权码，以及目标服务器
//        ts.connect("smtp.exmail.qq.com", "baolong@beimeng.club", "54321Miao");// qq企业邮箱
        ts.connect("smtp.qq.com", "2877025798@qq.com", "ssyyzjurppykdeag");// 铭艺
//        ts.connect("smtp.163.com", "beimengclub@163.com", "VTMINOMQLJISRPDS");// 网易邮箱

        //4、创建邮件本体
        Message message = getEmailContent(session);

        int time = 10;// 分钟
        // 测试Transport可以存活的时间
        while (true){
            int alreadyTime = 0;
//            for (int i = 0; i < time * 60; i++) {
//                alreadyTime++;
//                System.out.print(".❤");
//                Thread.sleep(1000);
//
//                if (alreadyTime % 60 == 0)
//                    System.out.println("已经休眠了" + alreadyTime + "秒" + (double)alreadyTime/60 + "分钟");
//            }
//
//            try{
//
//                ts.sendMessage(message, message.getAllRecipients());
//            }catch (Exception e){
//                System.out.println("发送失败了");
//            }

            System.out.println("激活ts");
//            for (int i = 0; i < 10; i++) {
//            }
//            ts.connect();
//            ts.connect();
//            ts.connect();
            if (!ts.isConnected()){
                ts.connect();
            }

            for (int i = 0; i < 60; i++) {
                Thread.sleep(1000);
                alreadyTime++;
                System.out.println("🚩");
                if (alreadyTime % 60 == 0)
                    System.out.println("已经休眠了" + alreadyTime + "秒" + (double)alreadyTime/60 + "分钟");
            }


            System.out.println("休眠时间" + time * 60  + "秒" + time + "分钟" + (double)time/60 +"小时");
            time *= 3;
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            System.out.println("发送成功");
        }



//        ts.close();
    }

    public static Message getEmailContent(Session session) throws MessagingException { // 配置邮件对象，设置发送内容
        //创建邮件对象
        MimeMessage message = new MimeMessage(session);

        //设置自定义发件人昵称
        String nick="";
        try {
            nick=javax.mail.internet.MimeUtility.encodeText("小艾同学");

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //指明邮件的发件人
        message.setFrom(new InternetAddress(nick+" <"+"2877025798@qq.com"+">")); // 这个可能可以改动

        //指明邮件的收件人，现在发件人和收件人是一样的，那就是自己给自己发
//        message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("1192384722@qq.com"),new InternetAddress("2877025798@qq.com")});
        message.setRecipients(Message.RecipientType.TO,"1192384722@qq.com");

        //邮件的标题
        message.setSubject("只包含文本的简单邮件");

        //邮件的文本内容
        message.setContent("你好啊！", "text/html;charset=UTF-8");

        return message;
    }

}

// 代码来自 https://blog.csdn.net/qq_41151659/article/details/96475739
